package com.lifeonwalden.fincalc.finance.bean;


import com.lifeonwalden.fincalc.bean.DateValuePair;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

public class DrawdownInfo implements Serializable {
    private static final long serialVersionUID = -6407543386947806493L;

    /* 回撤曲线 */
    private List<DateValuePair> mddSeries = new ArrayList<>();

    /* 当前回撤 */
    private BigDecimal dd;

    /* 最大回撤 */
    private BigDecimal mdd;

    /* 最大回撤起始点 */
    private DateValuePair startPoint;

    /* 最大回撤截止点 */
    private DateValuePair endPoint;

    /* 最大回撤修复点 */
    private DateValuePair fixPoint;

    /* 最大回撤持续天数 */
    private int mddDays;

    /* 最大回撤持续期数 */
    private int mddPeriods;

    /* 当前不创新高天数 */
    private int currentWithoutNewHigherDays;

    /* 最长不创新高天数 */
    private int longestWithoutNewHigherDays;

    /* 最长不创新高起始点 */
    private DateValuePair lwnhdStartPoint;

    /* 最长不创新高截止点 */
    private DateValuePair lwnhdEndPoint;

    public List<DateValuePair> getMddSeries() {
        return mddSeries;
    }

    public DrawdownInfo setMddSeries(List<DateValuePair> mddSeries) {
        this.mddSeries = mddSeries;
        return this;
    }

    public BigDecimal getDd() {
        return dd;
    }

    public DrawdownInfo setDd(BigDecimal dd) {
        this.dd = dd;
        return this;
    }

    public BigDecimal getMdd() {
        return mdd;
    }

    public DrawdownInfo setMdd(BigDecimal mdd) {
        this.mdd = mdd;
        return this;
    }

    public DateValuePair getStartPoint() {
        return startPoint;
    }

    public DrawdownInfo setStartPoint(DateValuePair startPoint) {
        this.startPoint = startPoint;
        return this;
    }

    public DateValuePair getEndPoint() {
        return endPoint;
    }

    public DrawdownInfo setEndPoint(DateValuePair endPoint) {
        this.endPoint = endPoint;
        return this;
    }

    public int getMddDays() {
        return mddDays;
    }

    public DrawdownInfo setMddDays(int mddDays) {
        this.mddDays = mddDays;
        return this;
    }

    public int getMddPeriods() {
        return mddPeriods;
    }

    public DrawdownInfo setMddPeriods(int mddPeriods) {
        this.mddPeriods = mddPeriods;
        return this;
    }

    public int getCurrentWithoutNewHigherDays() {
        return currentWithoutNewHigherDays;
    }

    public DrawdownInfo setCurrentWithoutNewHigherDays(int currentWithoutNewHigherDays) {
        this.currentWithoutNewHigherDays = currentWithoutNewHigherDays;
        return this;
    }

    public int getLongestWithoutNewHigherDays() {
        return longestWithoutNewHigherDays;
    }

    public DrawdownInfo setLongestWithoutNewHigherDays(int longestWithoutNewHigherDays) {
        this.longestWithoutNewHigherDays = longestWithoutNewHigherDays;
        return this;
    }

    public DateValuePair getLwnhdStartPoint() {
        return lwnhdStartPoint;
    }

    public DrawdownInfo setLwnhdStartPoint(DateValuePair lwnhdStartPoint) {
        this.lwnhdStartPoint = lwnhdStartPoint;
        return this;
    }

    public DateValuePair getLwnhdEndPoint() {
        return lwnhdEndPoint;
    }

    public DrawdownInfo setLwnhdEndPoint(DateValuePair lwnhdEndPoint) {
        this.lwnhdEndPoint = lwnhdEndPoint;
        return this;
    }

    public DateValuePair getFixPoint() {
        return fixPoint;
    }

    public DrawdownInfo setFixPoint(DateValuePair fixPoint) {
        this.fixPoint = fixPoint;
        return this;
    }
}
